package com.hq.zb.service;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.hq.zb.dto.MenuDto;
import com.hq.zb.entity.CurrentUser;
import com.hq.zb.model.Menu;
import com.hq.zb.vo.CommTreeVo;
import com.hq.zb.vo.MenuTreeVo;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 菜单表 服务类
 * </p>
 *
 * @author huanghanrui
 * @since 2022-03-08
 */
public interface IMenuService extends IService<Menu> {

    /**
     * 查询菜单树
     * @param menuDto
     * @return
     */
    List<CommTreeVo> queryTree(MenuDto menuDto);

    /**
     * 获取用户菜单
     * @param currentUser
     * @return
     */
    List<MenuTreeVo> queryByCurrentUser(CurrentUser currentUser, String sysSource);

    /**
     * 保存菜单
     * @param menu
     */
    void saveMenu(Menu menu);

    /**
     * 获取下级菜单
     * @param menuId
     * @param menuIds
     */
    void getSubordinateMenus(Integer menuId, List<Integer> menuIds);

    /**
     * 获取上级菜单
     * @param menuId
     * @param menuIds
     */
    void getHigherLevelMenus(Integer menuId, Set<Integer> menuIds);

    /**
     * 删除菜单
     * @param menus
     */
    void deleteMenu( List<Menu> menus);

    /**
     * 分页查询菜单
     * @param page
     * @param wrapper
     * @return
     */
    Page<MenuTreeVo> queryMenu(Page<MenuTreeVo> page, Wrapper<MenuTreeVo> wrapper);
}
